#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (C) 2008  Vladimir Lagunov

from config import *
import xmpp, base64

# Generate iq for setting VCard
def generateVCard():
	iq = xmpp.protocol.Iq(typ='set', xmlns=None)
	vcard = iq.addChild('vCard')
	vcard.setNamespace('vcard-temp')

	if avatar_enabled:
		photo = vcard.addChild('PHOTO')
		photo.addChild('TYPE').setData(image_type)
		image_file = open(avatar_image, 'rb')
		imgdata = '\n'
		tmpdata = base64.b64encode(image_file.read())
		i = 0
		while tmpdata != '':
			imgdata += tmpdata[:77]+'\n'
			if i == 30:
				imgdata += '\n'
				i = 0
			tmpdata = tmpdata[77:]
			i += 1
		photo.addChild('BINVAL').setData(imgdata)
		del imgdata, tmpdata
		image_file.close()

	vcard.addChild('NICKNAME').setData(bot_resource)
	vcard.addChild('FN').setData(bot_resource+' '+version)
	
	descr = version + u'\n\n== Обычные команды бота ==\n'
	descr += ', '.join(statistics_command)+u' - список '+unicode(max_statistics)+u' лучших игроков.\n'
	#descr += ', '.join(statistics_command)+u' <ник> - узнать количество очков у пользователя <ник>.\n'
	descr += ', '.join(mystatistics_command)+u' - узнать свои очки.\n'
	descr += ', '.join(hint_command)+u' - получить подсказку.\n'
	descr += u'\n\n== Команды управления ботом ==\n'
	descr += ', '.join(start_command)+u' - начать игру.\n'
	descr += ', '.join(stop_command)+u' - приостановить игру.\n'
	descr += ', '.join(nextq_command)+u' - следующий вопрос.\n'
	descr += u'\n\n== Ростер ==\n'
	descr += u'В своем статусе вне конференции бот показывает, идет ли игра или нет. Если вы всегда хотите знать, идет ли игра, но заходить на конференцию вам лень, то просто добавьте бота к себе в ростер.\nJID бота - '+myjid+'\n'
	descr += u'\n\n== Управление ботом ==\n'
	descr += u'Во избежание нечестной игры, команды управления ботом заработают только если их введут сразу два пользователя. Для смены вопроса обе команды должны быть введены до того как бот скажет ответ. Разница по времени между двумя командами не должна превышать минуту (ну или время жизни вопроса, если дело идет о подсказке).\n'
	descr += u'\n\n== Вопросы ==\n'
	descr += u'Время жизни каждого вопроса - 30 секунд\nЗа каждый угаданный вопрос ответившему дается 1 балл (если не брались подсказки).\n'
	descr += u'\n\n== Подсказка ==\n'
	descr += u'Для каждого вопроса можно использовать две подсказки - две произвольные буквы в ответе. При каждом запросе подсказки цена вопроса снижается на '+unicode(hint_fine)+u' баллов.\n'
	descr += u'\n\nВНИМАНИЕ: Бот ведет статистику по никам пользователя, а не по JID, так что если хотите сохранить свои очки, то заходите всегда с одним и тем же ником.\n'
	vcard.addChild('DESC').setData(descr)

	return iq

# Getting VCard of bot
def getVCard():
	iq = xmpp.protocol.Iq(typ='get', xmlns=None, to=myjid)
	iq.addChild('vCard').setNamespace('vcard-temp')
	return iq
